package book.nettyinaction.ch06;

import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;

/**
 * 代码清单 6-3 消费并释放入站消息
 *
 *
 * 由于消费入站数据是一项常规任务，所以 Netty 提供了一个特殊的被称为 SimpleChannelInboundHandler
 * 的 ChannelInboundHandler 实现。
 * 这个实现会在消息被 channelRead0() 方法消费之后自动释放消息。
 *
 */
@ChannelHandler.Sharable
public class DiscardInboundHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

        // 通过调用 ReferenceCountUtil.release() 方法释放资源
        ReferenceCountUtil.release( msg );
    }
}
